//
//  APBLEDeviceType.h
//  FuweiCloud
//
//  Created by michael on 2024/8/12.
//

//蓝牙设备状态改变通知
static NSNotificationName bleCentralStateDidUpdateNotification = @"bleCentralStateDidUpdateNotification";

//外设搜索回调通知
static NSNotificationName blePeripheralDiscoverNotification = @"blePeripheralDiscoverNotification";

//外设连接通知
static NSNotificationName blePeripheralConnectedNotification = @"blePeripheralConnectedNotification";

//外设断开连接通知
static NSNotificationName blePeripheralDisconnectNotification = @"blePeripheralDisconnectNotification";

//收到指令响应通知
static NSNotificationName bleReceivedCommandDataNotification = @"bleReceivedCommandDataNotification";


///< 蓝牙设备配网参数
typedef NS_ENUM(NSInteger, APBLEDeviceMatchType) {
    APBLEDeviceMatchTypeAL501 = 1,
    APBLEDeviceMatchTypeAL601 = 2,
    APBLEDeviceMatchTypeD289 = 3,
    APBLEDeviceMatchTypeK27 = 4,
    APBLEDeviceMatchTypeK28 = 5,
    APBLEDeviceMatchTypeAL701 = 6,
    APBLEDeviceMatchTypeHK01 = 7,
    APBLEDeviceMatchTypeC710 = 8,
    APBLEDeviceMatchTypeC630 = 9,
    APBLEDeviceMatchTypeD100 = 10,
    APBLEDeviceMatchTypeDL500 = 11,
    APBLEDeviceMatchTypeK26 = 12,
    APBLEDeviceMatchTypeKeypad = 13,
    APBLEDeviceMatchTypeD288 = 999999,
};


typedef NS_ENUM(int8_t, APBLEDeviceConnectStatus) {
    APBLEDeviceConnectStatus_Success = 0,
    APBLEDeviceConnectStatus_Failure = -100,
    APBLEDeviceConnectStatus_Timeout = -101,
};

///蓝牙指令
typedef NS_ENUM(NSUInteger, APBLEVLinkCommandType) {
    APBLEVLinkCommandType_ConnnectState = 0x10011, ///< 自定义指令，连接状态
    APBLEVLinkCommandType_RemoteUnlock = 0x8001, ///< 远程开锁
    APBLEVLinkCommandType_RemoteLock = 0x8002, ///< 远程关锁
    APBLEVLinkCommandType_RandomCode = 0x8003, ///< 随机码
    APBLEVLinkCommandType_PasswordAdd = 0x8015, ///< 添加密码
    APBLEVLinkCommandType_PasswordDelete = 0x8016, ///< 删除密码
    APBLEVLinkCommandType_PasswordList = 0x8017, ///< 密码列表
    APBLEVLinkCommandType_AdminPasswordSet = 0x8018, ///< 设置管理员密码
    APBLEVLinkCommandType_AdminPasswordGet = 0x8019, ///< 获取管理员密码
    APBLEVLinkCommandType_ReportUnlock = 0x8050, ///< 开锁事件上报 *
    APBLEVLinkCommandType_ReportLock = 0x8051, ///< 关锁上报
    APBLEVLinkCommandType_ReportLowPower = 0x8052, ///< 低电量上报
    APBLEVLinkCommandType_ReportUnlockException = 0x8054, ///< 开锁异常上报
    APBLEVLinkCommandType_ReportPwdAddition = 0x8055, ///< 密码添加上报
    APBLEVLinkCommandType_ReportPwdDeletion = 0x8056, ///< 密码删除上报
    APBLEVLinkCommandType_ReportTrialError = 0x8057, ///< 试错报警上报
    APBLEVLinkCommandType_ReportDoorOpened = 0x8058, ///< 门未关上报
    APBLEVLinkCommandType_ReportMultiLock = 0x8061, ///< 批量开、关锁事件上报
    APBLEVLinkCommandType_ReportMultiAlarm = 0x8062, ///<批量警报事件上报
    APBLEVLinkCommandType_AutoReplySet = 0x805A, ///< 自动回复设置
    APBLEVLinkCommandType_AutoReplyGet = 0x805B, ///< 自动回复获取
    APBLEVLinkCommandType_Power = 0x8064, ///< 获取电量
    APBLEVLinkCommandType_LockVolumeSet = 0x8067, ///< 设置门锁音量
    APBLEVLinkCommandType_LockVolumeGet = 0x8068, ///< 获取门锁音量
    APBLEVLinkCommandType_LockVerion = 0x8070, ///< 获取门锁版本信息
    APBLEVLinkCommandType_AutoLockSet = 0x8095, ///< 设置自动闭锁
    APBLEVLinkCommandType_AutoLockGet = 0x8096, ///< 获取自动闭锁
    APBLEVLinkCommandType_LockState = 0x80A5, ///< 获取门锁状态
    APBLEVLinkCommandType_LockAllAttr = 0x80B0, ///< 获取门锁所有属性(不包含密码列表信息)
    ///< ==================================9xxx系列
    APBLEVLinkCommandType_NetConfig = 0x9001,           ///< 配网
    APBLEVLinkCommandType_NetDiagnostic = 0x9010,       ///< 网络诊断
    APBLEVLinkCommandType_FingerprintAdd = 0x9020,      ///< 添加指纹
    APBLEVLinkCommandType_FingerprintDelete = 0x9021,   ///< 删除指纹
    APBLEVLinkCommandType_FingerprintCancel = 0x9022,   ///< 取消指纹录入
    APBLEVLinkCommandType_FingerprintProgress = 0x9023,  ///< 指纹录入进度
    APBLEVLinkCommandType_SyncTime = 0x9040, ///< 同步网络时间
    APBLEVLinkCommandType_NFCAdd = 0x9050, ///< NFC读取
    APBLEVLinkCommandType_NFCCancel = 0x9051, ///< NFC取消录入
    APBLEVLinkCommandType_NFCAddResult = 0x9052, ///< NFC添加结果
    APBLEVLinkCommandType_PalmAdd = 0x9054, ///< 掌静脉
    APBLEVLinkCommandType_PalmAddResult = 0x9055, ///< 掌静脉添加结果
    APBLEVLinkCommandType_BindDevice = 0x9060, ///< 绑定设备
    APBLEVLinkCommandType_UnbindDevice = 0x9061, ///< 解绑设备
    APBLEVLinkCommandType_SecretCheck = 0x9062, ///< 密钥校验
    APBLEVLinkCommandType_LockProductInfo = 0x8071, ///< 锁的产品信息
    APBLEVLinkCommandType_OTARequest = 0xC010, ///< OTA升级前准备
    APBLEVLinkCommandType_OTAFileInfo = 0xC011, ///< OTA文件信息
    APBLEVLinkCommandType_OTAFileOffset = 0xC012, ///< OTA文件偏移
    APBLEVLinkCommandType_OTAFileData = 0xC013, ///< OTA文件数据
    APBLEVLinkCommandType_OTAFinished = 0xC014, ///< OTA升级结束
    APBLEVLinkCommandType_AccessoryMatch = 0x9063, ///< 配件配对
    APBLEVLinkCommandType_AccessoryMatchResult = 0x9064, ///< 配件配对结果上报
    APBLEVLinkCommandType_EmergencyUnlock = 0x9065, ///< 紧急开锁
    APBLEVLinkCommandType_AdjustLock = 0x9066, ///< 门锁校准
    APBLEVLinkCommandType_DoorState = 0x9067, ///< 获取门和锁的状态
    APBLEVLinkCommandType_VendorSN = 0x9068, ///< 第三方的SN信息（比如 homekit sn信息）
};
